﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using negocios;
using objetos;

namespace softsales.cadastro
{
    public partial class frmCidade : softsales.template.frmBase
    {
        public frmCidade()
        {
            InitializeComponent();
        }

        BLL_TB_CIDADE b_tb_cidade = new BLL_TB_CIDADE();
        OBJ_TB_CIDADE o_tb_cidade = new OBJ_TB_CIDADE();

        BLL_TB_UF b_tb_uf = new BLL_TB_UF();

        private void frmCidade_Load(object sender, EventArgs e)
        {

            grdCidade.Focus();
            grdCidade.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

         //   b_tb_uf.PreencheControleWindows(id_ufComboBox, true);
            CarregaGrid();

        }


        public override void btnExcluir_Click(object sender, EventArgs e)
        {
            base.btnExcluir_Click(sender, e);
        }

        public override void btnEditar_Click(object sender, EventArgs e)
        {

            string id = string.Empty;

            foreach (DataGridViewRow item in grdCidade.Rows)
            {
                if (item.Selected)
                {
                    id = item.Cells["id"].Value.ToString();
                }

            }

            BLL_TB_UF b_tb_uf = new BLL_TB_UF();
            List<OBJ_TB_UF> lista_uf = b_tb_uf.SelecionarLista();

            foreach (OBJ_TB_CIDADE o_tb_cidade in b_tb_cidade.SelecionarLista(string.Format("tb_cidade.id = {0}", id), ""))
            {
                idTextBox.Text = o_tb_cidade.id.ToString();
                descricao_ufTextBox.Text = o_tb_cidade.descricao_uf.ToString();
                cidadeTextBox.Text = o_tb_cidade.cidade.ToString();
                codigo_ibgeTextBox.Text = o_tb_cidade.codigo_ibge.ToString();
                id_ufComboBox.SelectedIndex =  id_ufComboBox.FindStringExact(lista_uf.Find((uf)=>uf.id == o_tb_cidade.id_uf).uf);

            }

            base.btnEditar_Click(sender, e);
            tabContainer.SelectedTab = tabFormulario;


        }

        public override void btnNovo_Click(object sender, EventArgs e)
        {
            base.btnNovo_Click(sender, e);
            tabContainer.SelectedTab = tabFormulario;
            idTextBox.Enabled = false;
            LimpaControles(this);


        }

        public override void btnCancelar_Click(object sender, EventArgs e)
        {

            base.btnCancelar_Click(sender, e);

            tabContainer.SelectedTab = tabLista;
        }

        public override void LimpaControles(Control ctl)
        {
            base.LimpaControles(ctl);
        }

        public override void btnLocalizar_Click(object sender, EventArgs e)
        {
            softsales.template.frmLocalizar fCidadeLocalizar = new softsales.template.frmLocalizar();
            DataTable dt = b_tb_cidade.CriarDataTable();
            if (fCidadeLocalizar.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                List<string> where = new List<string>();

                if (fCidadeLocalizar.id != string.Empty)
                    where.Add(string.Format(" tb_cidade.id = {0}", fCidadeLocalizar.id));
            
                if (fCidadeLocalizar.descricao != string.Empty)
                    where.Add(string.Format(" tb_cidade.cidade LIKE '%{0}%'", fCidadeLocalizar.descricao));
 
                List<OBJ_TB_CIDADE> lista_cidade = b_tb_cidade.SelecionarLista(string.Join("and", where.ToArray()).ToString(), "");


                if (lista_cidade.Count > 0)
                {

                    for (int i = 0; i <= lista_cidade.Count - 1; i++)
                    {
                        b_tb_cidade.PreencheDataTable(dt, lista_cidade[i]);
                    }

                    grdCidade.DataSource = dt;
                    grdCidade.Refresh();

                    dt.Dispose();
                }
                else
                {
                    MessageBox.Show("Nenhum registro encontrado.");
                }



            }
            //base.btnLocalizar_Click(sender, e);

        }

        public override void btnSalvar_Click(object sender, EventArgs e)
        {
            base.btnSalvar_Click(sender, e);
        }

        public override bool Editar()
        {
            return base.Editar();
        }

        public override bool Localizar()
        {
            return base.Localizar();
        }

        public override bool Salvar()
        {
            try
            {
                o_tb_cidade.cidade = cidadeTextBox.Text;
                o_tb_cidade.codigo_ibge = Convert.ToInt32(codigo_ibgeTextBox.Text);
                o_tb_cidade.descricao_uf = descricao_ufTextBox.Text;
                o_tb_cidade.id_uf = ((OBJ_TB_UF)id_ufComboBox.SelectedItem).id;


                if (idTextBox.Text != string.Empty)
                {
                    o_tb_cidade.id = Convert.ToInt32(idTextBox.Text);
                    b_tb_cidade.Alterar(o_tb_cidade);
                }
                else
                {
                    b_tb_cidade.Incluir(o_tb_cidade);
                }
                tabContainer.SelectedTab = tabLista;
                CarregaGrid();
                return true;
            }
            catch (Exception)
            {

                return false;
            }

        }

        public override bool Excluir()
        {
            try
            {
                o_tb_cidade.id = Convert.ToInt32(idTextBox.Text);
                b_tb_cidade.Excluir(o_tb_cidade);
                tabContainer.SelectedTab = tabLista;
                CarregaGrid();
                return true;
            }
            catch (Exception)
            {

                return false;
            }

        }

        public override void btnFechar_Click(object sender, EventArgs e)
        {
            base.btnFechar_Click(sender, e);
        }

        public override void CarregaGrid()
        {

            DataTable dt = b_tb_cidade.CriarDataTable();

            List<OBJ_TB_CIDADE> lista_cidade = b_tb_cidade.SelecionarLista();

            for (int i = 0; i <= lista_cidade.Count - 1; i++)
            {
                b_tb_cidade.PreencheDataTable(dt, lista_cidade[i]);
            }


            grdCidade.DataSource = dt;
            grdCidade.Refresh();

            dt.Dispose();
        }
     
    }
}
